MongoDB, একটি NoSQL ডাটাবেস সিস্টেম, যা ডকুমেন্ট-ভিত্তিক এবং JSON (BSON) ফরম্যাটে ডেটা সংরক্ষণ করে। MongoDB-তে ডেটা অনুসন্ধান করার জন্য বিভিন্ন ধরনের কুয়েরি ব্যবহার করা যায়, এবং এর মধ্যে একটি অত্যন্ত গুরুত্বপূর্ণ ফিচার হল Regular Expressions (RegEx) এবং Text Queries। এগুলি MongoDB-তে স্ট্রিং ভিত্তিক অনুসন্ধানের জন্য অত্যন্ত কার্যকরী।
1. Regular Expressions (RegEx) in MongoDB
Regular Expressions (RegEx) হল একটি শক্তিশালী টুল যা ব্যবহারকারীদের স্ট্রিংয়ের মধ্যে প্যাটার্ন ম্যাচিং বা অনুসন্ধান করতে সহায়তা করে। MongoDB-তে RegEx ব্যবহার করা হয় স্ট্রিংয়ের মধ্যে নির্দিষ্ট প্যাটার্ন অনুসন্ধান করতে।
RegEx কুয়েরি কিভাবে কাজ করে?
MongoDB-এর find() মেথডে $regex অপারেটর ব্যবহার করে আপনি একটি নির্দিষ্ট প্যাটার্নের সাথে মেলে এমন ডেটা অনুসন্ধান করতে পারেন।
RegEx Syntax in MongoDB:
{
field: { $regex: /pattern/, $options: "i" }
}
- $regex: এটি স্ট্রিং প্যাটার্নের সাথে মেলে এমন ডকুমেন্ট অনুসন্ধান করতে ব্যবহৃত হয়।
- $options: বিভিন্ন অপশন, যেমন
i(case-insensitive),m(multiline), ইত্যাদি।
RegEx Example:
ধরা যাক, আমাদের একটি users কালেকশন আছে, এবং আমরা সেসব ব্যবহারকারীদের খুঁজতে চাই যাদের নাম "john" দিয়ে শুরু হয় (case-insensitive):
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
public class MongoDBRegExExample {
public static void main(String[] args) {
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("testdb");
MongoCollection<Document> collection = database.getCollection("users");
// Create query using RegEx to find users whose name starts with 'john' (case insensitive)
Document query = new Document("name", new Document("$regex", "^john").append("$options", "i"));
// Execute query and print results
for (Document user : collection.find(query)) {
System.out.println(user.toJson());
}
mongoClient.close();
}
}
ব্যাখ্যা:
- এই কুয়েরি
nameফিল্ডের মধ্যে "john" দিয়ে শুরু হওয়া সমস্ত ডকুমেন্ট খুঁজে বের করবে, এবং এটি case-insensitive হবে। $regexপ্যাটার্নের মাধ্যমে, MongoDB স্ট্রিংয়ের মধ্যে প্যাটার্নের সাথে মেলা ডকুমেন্ট ফিরিয়ে দেয়।
RegEx অপশন:
"i": Case-insensitive অনুসন্ধান।"m": Multiline matching।"x": Extended matching (spaces and comments in the regex pattern).
2. Text Queries in MongoDB
MongoDB text search সমর্থন করে, যেখানে আপনি text indexes ব্যবহার করে দ্রুত স্ট্রিং ভিত্তিক অনুসন্ধান করতে পারেন। MongoDB-তে Text Indexes তৈরি করা হয় যাতে স্ট্রিংয়ের মধ্যে শব্দ অনুসন্ধান (word search) করা যায়।
Text Indexes তৈরি করা:
Text queries করার জন্য MongoDB-তে text index তৈরি করতে হয়।
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
public class MongoDBTextSearchExample {
public static void main(String[] args) {
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("testdb");
MongoCollection<Document> collection = database.getCollection("articles");
// Creating a text index on the 'content' field
collection.createIndex(new Document("content", "text"));
// Querying using text search
Document query = new Document("$text", new Document("$search", "mongodb"));
// Execute the query and print results
for (Document article : collection.find(query)) {
System.out.println(article.toJson());
}
mongoClient.close();
}
}
ব্যাখ্যা:
createIndex():contentফিল্ডে একটি text index তৈরি করা হয়েছে।$text: এটি text search অপারেটর, যা MongoDB-তে ডকুমেন্টের মধ্যে নির্দিষ্ট শব্দ খুঁজে বের করতে ব্যবহৃত হয়। এখানেmongodbশব্দটি অনুসন্ধান করা হচ্ছে।$search: এখানে "mongodb" শব্দটি অনুসন্ধান করা হচ্ছে।
Text Search এর কিছু সুবিধা:
- Natural Language Processing (NLP) সমর্থন: MongoDB শব্দের মৌলিক রূপের (stem words) সাথে মেলানোর জন্য NLP ব্যবহার করে, যেমন "running" এবং "run"।
- Multiple Words: আপনি একাধিক শব্দের অনুসন্ধান করতে পারেন এবং তাদের মধ্যে অ্যান্ড, অথবা সম্পর্ক (AND, OR) ব্যবহার করতে পারেন।
- Phrase Searching: আপনি নির্দিষ্ট শব্দের সঠিক অর্ডারে অনুসন্ধান করতে পারেন (যেমন
"MongoDB Tutorial"একটি ফ্রেজ হিসাবে)।
Text Query Example with Multiple Words:
Document query = new Document("$text", new Document("$search", "mongodb OR database"));
এখানে, mongodb অথবা database শব্দের মধ্যে যে কোনো একটি মিললেই তা রিটার্ন হবে।
Text Search with Phrase:
Document query = new Document("$text", new Document("$search", "\"MongoDB Tutorial\""));
এখানে, "MongoDB Tutorial" শব্দগুচ্ছটি সঠিকভাবে মেলানোর জন্য phrase search ব্যবহৃত হচ্ছে।
3. Combining Regular Expressions and Text Queries
MongoDB-তে Regular Expressions এবং Text Queries একসাথে ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, আপনি একটি text index ব্যবহার করে একটি শব্দ অনুসন্ধান করতে পারেন এবং একটি RegEx প্যাটার্ন ব্যবহার করে সেই ফলাফলগুলির মধ্যে আরো কিছু নির্দিষ্ট ফিল্টার করতে পারেন।
Example:
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
public class MongoDBRegExAndTextExample {
public static void main(String[] args) {
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("testdb");
MongoCollection<Document> collection = database.getCollection("articles");
// Creating a text index
collection.createIndex(new Document("content", "text"));
// Querying using both text search and RegEx
Document query = new Document("$text", new Document("$search", "mongodb"))
.append("content", new Document("$regex", "tutorial").append("$options", "i"));
// Execute the query and print results
for (Document article : collection.find(query)) {
System.out.println(article.toJson());
}
mongoClient.close();
}
}
ব্যাখ্যা:
- প্রথমে text index তৈরি করা হয়েছে এবং তারপর text search করা হয়েছে যেখানে "mongodb" শব্দটি অনুসন্ধান করা হচ্ছে।
- পরে, RegEx প্যাটার্ন
tutorialব্যবহার করা হয়েছে এবং case-insensitive অপশন দেওয়া হয়েছে।
- Regular Expressions এবং Text Queries MongoDB-তে শক্তিশালী এবং নমনীয় অনুসন্ধান প্রদান করে, যা স্ট্রিংয়ের মধ্যে প্যাটার্ন বা শব্দ খুঁজে বের করতে ব্যবহৃত হয়।
- Regular Expressions MongoDB-তে স্ট্রিংয়ের মধ্যে নির্দিষ্ট প্যাটার্নের সাথে মেলা ডেটা অনুসন্ধান করতে সাহায্য করে।
- Text Queries MongoDB-তে শক্তিশালী শব্দ অনুসন্ধান ব্যবস্থা প্রদান করে যা text index ব্যবহার করে বিভিন্ন ধরনের ভাষাগত অনুসন্ধান এবং শব্দ অনুসন্ধান সমর্থন করে।
এগুলি MongoDB-এর advanced search ফিচারগুলো যা অত্যন্ত উপকারী যখন আপনি বড় ডেটাবেসে টেক্সট-ভিত্তিক বা প্যাটার্ন-ভিত্তিক অনুসন্ধান করতে চান।
Read more